{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import keras\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from pandas import datetime\n",
    "import math, time\n",
    "import itertools\n",
    "from sklearn import preprocessing\n",
    "import datetime\n",
    "from operator import itemgetter\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from math import sqrt\n",
    "from keras.models import Sequential\n",
    "from keras.layers.core import Dense, Dropout, Activation\n",
    "from keras.layers.recurrent import LSTM\n",
    "import QUANTAXIS as QA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "## load data function\n",
    "def load_data(stock, seq_len):\n",
    "    # stock 是一个input的dataframe\n",
    "    amount_of_features = len(stock.columns)\n",
    "    data = stock.as_matrix() #pd.DataFrame(stock)\n",
    "    sequence_length = seq_len + 1\n",
    "    result = []\n",
    "    for index in range(len(data) - sequence_length):\n",
    "        result.append(data[index: index + sequence_length])\n",
    "\n",
    "    result = np.array(result)\n",
    "    row = round(0.9 * result.shape[0])\n",
    "    train = result[:int(row), :]\n",
    "    x_train = train[:, :-1]\n",
    "    y_train = train[:, -1][:,-1]\n",
    "    x_test = result[int(row):, :-1]\n",
    "    y_test = result[int(row):, -1][:,-1]\n",
    "\n",
    "    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))\n",
    "    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features))  \n",
    "\n",
    "    return [x_train, y_train, x_test, y_test]\n",
    "\n",
    "def build_model(layers):\n",
    "    model = Sequential()\n",
    "\n",
    "    model.add(LSTM(\n",
    "        input_dim=layers[0],\n",
    "        output_dim=layers[1],\n",
    "        return_sequences=True))\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    model.add(LSTM(\n",
    "        layers[2],\n",
    "        return_sequences=False))\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    model.add(Dense(\n",
    "        output_dim=layers[2]))\n",
    "    model.add(Activation(\"linear\"))\n",
    "\n",
    "    start = time.time()\n",
    "    model.compile(loss=\"mse\", optimizer=\"rmsprop\",metrics=['accuracy'])\n",
    "    print(\"Compilation Time : \", time.time() - start)\n",
    "    return model\n",
    "\n",
    "def build_model2(layers):\n",
    "        d = 0.2\n",
    "        model = Sequential()\n",
    "        model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=True))\n",
    "        model.add(Dropout(d))\n",
    "        model.add(LSTM(64, input_shape=(layers[1], layers[0]), return_sequences=False))\n",
    "        model.add(Dropout(d))\n",
    "        model.add(Dense(16,init='uniform',activation='relu'))        \n",
    "        model.add(Dense(1,init='uniform',activation='relu'))\n",
    "        model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])\n",
    "        return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "data=QA.QA_fetch_stock_day_adv('000001','2000-01-01','2018-01-31').to_qfq()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "QUANTAXIS>> The Pic has been saved to your path: .\\QA_stock_day_codepackage_qfq.html\n"
     ]
    }
   ],
   "source": [
    "data.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "used_data=pd.concat([data.open,data.high,data.close],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "window = 5\n",
    "X_train, y_train, X_test, y_test = load_data(used_data[::-1], window)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[13.6       , 14.05      , 14.05      ],\n",
       "        [13.7       , 13.84      , 13.65      ],\n",
       "        [14.05      , 14.25      , 13.74      ],\n",
       "        [14.18      , 14.34      , 14.05      ],\n",
       "        [14.45      , 14.47      , 14.2       ]],\n",
       "\n",
       "       [[13.7       , 13.84      , 13.65      ],\n",
       "        [14.05      , 14.25      , 13.74      ],\n",
       "        [14.18      , 14.34      , 14.05      ],\n",
       "        [14.45      , 14.47      , 14.2       ],\n",
       "        [14.66      , 15.08      , 14.64      ]],\n",
       "\n",
       "       [[14.05      , 14.25      , 13.74      ],\n",
       "        [14.18      , 14.34      , 14.05      ],\n",
       "        [14.45      , 14.47      , 14.2       ],\n",
       "        [14.66      , 15.08      , 14.64      ],\n",
       "        [14.36      , 14.9       , 14.65      ]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[ 3.19328644,  3.23457894,  3.18640436],\n",
       "        [ 3.16117005,  3.21163866,  3.18869838],\n",
       "        [ 3.21163866,  3.23228491,  3.16117005],\n",
       "        [ 3.28734157,  3.32634004,  3.23687296],\n",
       "        [ 3.23228491,  3.23228491,  3.23228491]],\n",
       "\n",
       "       [[ 3.16117005,  3.21163866,  3.18869838],\n",
       "        [ 3.21163866,  3.23228491,  3.16117005],\n",
       "        [ 3.28734157,  3.32634004,  3.23687296],\n",
       "        [ 3.23228491,  3.23228491,  3.23228491],\n",
       "        [ 2.90882701,  3.00288215,  2.93864937]],\n",
       "\n",
       "       [[ 3.21163866,  3.23228491,  3.16117005],\n",
       "        [ 3.28734157,  3.32634004,  3.23687296],\n",
       "        [ 3.23228491,  3.23228491,  3.23228491],\n",
       "        [ 2.90882701,  3.00288215,  2.93864937],\n",
       "        [ 2.99370604,  2.99600006,  2.91800313]]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:54: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(16, activation=\"relu\", kernel_initializer=\"uniform\")`\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:55: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(1, activation=\"relu\", kernel_initializer=\"uniform\")`\n"
     ]
    }
   ],
   "source": [
    "model = build_model2([3,window,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\keras\\models.py:942: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`.\n",
      "  warnings.warn('The `nb_epoch` argument in `fit` '\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x20235704e10>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=512,\n",
    "    nb_epoch=500,\n",
    "    validation_split=0.1,\n",
    "    verbose=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# print(X_test[-1])\n",
    "diff=[]\n",
    "ratio=[]\n",
    "p = model.predict(X_test)\n",
    "for u in range(len(y_test)):\n",
    "    pr = p[u][0]\n",
    "    ratio.append((y_test[u]/pr)-1)\n",
    "    diff.append(abs(y_test[u]- pr))\n",
    "    #print(u, y_test[u], pr, (y_test[u]/pr)-1, abs(y_test[u]- pr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20259de1390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt2\n",
    "\n",
    "plt2.plot(p,color='red', label='prediction')\n",
    "plt2.plot(y_test,color='blue', label='y_test')\n",
    "plt2.legend(loc='upper left')\n",
    "plt2.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
